package com.soft.hibernate;

import org.hibernate.FlushMode;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.dao.DataAccessResourceFailureException;
import org.springframework.orm.hibernate3.SessionFactoryUtils;

public class OpenSessionInViewFilter extends
		org.springframework.orm.hibernate3.support.OpenSessionInViewFilter {

	@Override
	protected void closeSession(Session session, SessionFactory sessionFactory) {
		session.flush();
		session.clear();
		super.closeSession(session, sessionFactory);
	}

	@Override
	public void setSingleSession(boolean singleSession) {
		super.setSingleSession(singleSession);
	}

	@Override
	protected Session getSession(SessionFactory sessionFactory)
			throws DataAccessResourceFailureException {
		Session session = SessionFactoryUtils.getSession(sessionFactory, true);

		session.setFlushMode(FlushMode.COMMIT);

		return session;
		// return super.getSession(sessionFactory);
	}

}
